]> dgit.raspbian.org Git - gnome-shell.git/log
gnome-shell.git
7 months agoUpdate changelog
Simon McVittie [Sat, 28 Mar 2026 18:44:14 +0000 (18:44 +0000)]
Update changelog

7 months agod/source/options: Ignore regeneration of CSS when building source package
Simon McVittie [Sat, 28 Mar 2026 18:40:40 +0000 (18:40 +0000)]
d/source/options: Ignore regeneration of CSS when building source package

7 months agodebian/rules: Update stylesheet regeneration script path
Marco Trevisan (Treviño) [Tue, 8 Jul 2025 04:22:22 +0000 (06:22 +0200)]
debian/rules: Update stylesheet regeneration script path

(cherry picked from commit f3df179ae11aae4e3c25060a21604ab8f82b6178)

7 months agodebian/rules: Regenerate the css files before building
Marco Trevisan (Treviño) [Thu, 29 Feb 2024 22:08:38 +0000 (23:08 +0100)]
debian/rules: Regenerate the css files before building

Otherwise we may ship the outdated ones when patches apply changes to
upstream versions.

(cherry picked from commit cbd6c5333eb46e771b6362b1ce4acf48c2571491)

7 months agod/patches: Reduce delta vs. Ubuntu by adding some cherry-picks from upstream
Simon McVittie [Sat, 28 Mar 2026 18:32:31 +0000 (18:32 +0000)]
d/patches: Reduce delta vs. Ubuntu by adding some cherry-picks from upstream

This brings us up to upstream commit 50.0-7-gb8dbf86a4.

7 months agod/tests/shell-tests: Eliminate trailing whitespace
Simon McVittie [Thu, 26 Mar 2026 14:38:35 +0000 (14:38 +0000)]
d/tests/shell-tests: Eliminate trailing whitespace

Gbp-Dch: ignore

7 months agod/tests/shell-tests: Don't wrap the tests in xvfb-run any more
Simon McVittie [Thu, 26 Mar 2026 14:38:21 +0000 (14:38 +0000)]
d/tests/shell-tests: Don't wrap the tests in xvfb-run any more

7 months agoUpdate changelog
Simon McVittie [Thu, 26 Mar 2026 11:41:02 +0000 (11:41 +0000)]
Update changelog

7 months agod/control: Bump gsettings-desktop-schemas dependency as per meson.build
Simon McVittie [Thu, 26 Mar 2026 11:39:08 +0000 (11:39 +0000)]
d/control: Bump gsettings-desktop-schemas dependency as per meson.build

7 months agoUpdate changelog
Simon McVittie [Thu, 26 Mar 2026 11:06:25 +0000 (11:06 +0000)]
Update changelog

7 months agodebian/changelog: Don't mention reinstating patch that was dropped again
Daniel van Vugt [Thu, 19 Mar 2026 08:19:05 +0000 (16:19 +0800)]
debian/changelog: Don't mention reinstating patch that was dropped again

7 months agoDrop upstreamed patches
Daniel van Vugt [Thu, 19 Mar 2026 07:14:22 +0000 (15:14 +0800)]
Drop upstreamed patches

7 months agoBump dependencies per meson.build
Daniel van Vugt [Thu, 19 Mar 2026 07:12:26 +0000 (15:12 +0800)]
Bump dependencies per meson.build

7 months agodebian/changelog: Change version to 50.0
Daniel van Vugt [Thu, 19 Mar 2026 07:08:51 +0000 (15:08 +0800)]
debian/changelog: Change version to 50.0

7 months agoMerge tag 'upstream/50.0' into debian/latest
Daniel van Vugt [Thu, 19 Mar 2026 07:07:22 +0000 (15:07 +0800)]
Merge tag 'upstream/50.0' into debian/latest

7 months agoSync with release tarball contents
Daniel van Vugt [Thu, 19 Mar 2026 06:58:46 +0000 (14:58 +0800)]
Sync with release tarball contents

7 months agoMerge tag '50.0' into upstream/latest
Daniel van Vugt [Thu, 19 Mar 2026 06:54:55 +0000 (14:54 +0800)]
Merge tag '50.0' into upstream/latest

7 months agoUpdate changelog
Simon McVittie [Tue, 17 Mar 2026 12:06:41 +0000 (12:06 +0000)]
Update changelog

7 months agoMerge branch 'debian/forky' into debian/latest
Simon McVittie [Tue, 17 Mar 2026 12:04:32 +0000 (12:04 +0000)]
Merge branch 'debian/forky' into debian/latest

7 months agoRelease to unstable
Simon McVittie [Tue, 17 Mar 2026 11:56:33 +0000 (11:56 +0000)]
Release to unstable

7 months agoUpdate changelog
Simon McVittie [Tue, 17 Mar 2026 10:56:24 +0000 (10:56 +0000)]
Update changelog

Closes: #1128816
7 months agoDrop libgvc patch, applied upstream
Simon McVittie [Tue, 17 Mar 2026 10:53:46 +0000 (10:53 +0000)]
Drop libgvc patch, applied upstream

7 months agoNew upstream release
Simon McVittie [Tue, 17 Mar 2026 10:34:15 +0000 (10:34 +0000)]
New upstream release

7 months agoUpdate upstream source from tag 'upstream/49.5'
Simon McVittie [Tue, 17 Mar 2026 10:34:15 +0000 (10:34 +0000)]
Update upstream source from tag 'upstream/49.5'

Update to upstream version '49.5'
with Debian dir 2b1b97339cb79b2d34ef62a4e7c82223481fa76c

7 months agoNew upstream version 49.5
Simon McVittie [Tue, 17 Mar 2026 10:34:11 +0000 (10:34 +0000)]
New upstream version 49.5

7 months agod/watch: Watch for all versions, not just 49.x
Simon McVittie [Tue, 17 Mar 2026 10:33:25 +0000 (10:33 +0000)]
d/watch: Watch for all versions, not just 49.x

7 months agoBump version to 50.0
Florian Müllner [Sat, 14 Mar 2026 17:01:56 +0000 (18:01 +0100)]
Bump version to 50.0

Update NEWS.

7 months agoUpdate German translation
Christian Kirbach [Sun, 15 Mar 2026 10:48:37 +0000 (10:48 +0000)]
Update German translation

7 months agooverview: Fix delayed grab when entering via gesture
Florian Müllner [Sat, 14 Mar 2026 18:42:18 +0000 (19:42 +0100)]
overview: Fix delayed grab when entering via gesture

When showing the overview in response to a gesture update, we
set the corresponding overview properties first before syncing
the grab.

However as we don't sync the grab while the overview is animating,
we currently end up only taking the grab once the animation is complete.

This is unintentional and messes with the expected keyboard focus,
so only mark the animation as in progress after syncing the grab.

Closes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/8967
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/4128>

7 months agoBump version to 49.5
Florian Müllner [Sat, 14 Mar 2026 18:17:13 +0000 (19:17 +0100)]
Bump version to 49.5

Update NEWS.

7 months agostatus/keyboard: Preserve MRU order while IBus is disabled
Maksim Mazko [Mon, 2 Mar 2026 17:44:56 +0000 (20:44 +0300)]
status/keyboard: Preserve MRU order while IBus is disabled

In password fields, IBus sources are temporarily disabled and a backup
of the MRU list is created. If the user switches layouts in that state,
the active MRU list is updated, but the backup is not.

When IBus is enabled again, the stale backup is restored and the order
the user just selected is lost. Sync the backup on interactive source
switches while IBus is disabled, so the MRU order stays consistent.

Closes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/8538
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/4101>
(cherry picked from commit 8e0f850edc03ada8f79ef68412eabb05c5f76d02)

7 months agostatus/keyboard: Simplify MRU list updates
Maksim Mazko [Fri, 6 Mar 2026 13:20:10 +0000 (16:20 +0300)]
status/keyboard: Simplify MRU list updates

Rewrite the update logic to a more direct form, improving readability by
removing the manual iteration and list manipulation.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/4101>
(cherry picked from commit fcba3bd44ec0362a26f456ff1ba2321d6b16594c)

7 months agoboxpointer: Properly update arrow side when requested
Florian Müllner [Thu, 12 Mar 2026 10:32:40 +0000 (11:32 +0100)]
boxpointer: Properly update arrow side when requested

Boxpointer tracks both the "user arrow side", which is the side
that was explicitly specified, and the "arrow side", which is the
actual side that may have been flipped due to space constraints.

However the former currently always keeps tracking the side that
was specified at construction time, even if it is explicitly
changed with `updateArrowSide()`.

That means that on allocation, the arrow side is reverted to its
original value again, unless the flip calculation happens to turn
it into the intended value.

This is unexpected, so update both current and intended arrow side
when updating the arrow side.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/4120>
(cherry picked from commit ebdb6b8bcffea72005e5e959d7625aef37b4fa55)

7 months agoboxpointer: Queue relayout after updating arrow side
Florian Müllner [Fri, 13 Mar 2026 11:47:48 +0000 (12:47 +0100)]
boxpointer: Queue relayout after updating arrow side

We currently queue a repaint after setting a new arrow side, but
that seems insufficient - moving the arrow from top/bottom to the
left/right for example may very well affect the layout, plus the
arrow may need flipping due to size constraints (which happens
on allocation).

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/4120>
(cherry picked from commit 8f19a2c1b82e5eb67c33a8b25a235264c3b2a920)

7 months agosystemActions: Fix initial visibility of logout action
Sebastian Keller [Fri, 13 Mar 2026 00:27:29 +0000 (01:27 +0100)]
systemActions: Fix initial visibility of logout action

When `_updateLogout()` is called on login, the AccountsService user
might not have been loaded yet. This would have resulted in all values
being null/false, including `local_account`. Since `!localAccount` is
one of the cases where the action is available, this would have wrongly
resulted in the item being shown when not intended to be shown. But only
until something triggers another call of `_updateLogout()`, such as
locking/unlocking the session.

Related: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/9100
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/4121>
(cherry picked from commit 6f5f3c1f18a3597df04f831d4a8e1cdba2c0ecea)

7 months agomain: Also respect --force-animations flag in remote sessions
Florian Müllner [Wed, 11 Mar 2026 21:37:20 +0000 (22:37 +0100)]
main: Also respect --force-animations flag in remote sessions

When commit 33d3a6564 added support for the --force-animations flag,
it explicitly excluded remote sessions.

There has been some interest in enabling the flag for remote sessions
as well recently, and as nobody seems to remember why they were
excluded, do just that.

Closes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/9099
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/4118>
(cherry picked from commit 39d622f3a26a87ba3f087b47d501fdb7e1eadd24)

7 months agoappDisplay: Fix focus path when edit is enabled
Sergio Costas Rodriguez [Tue, 10 Mar 2026 11:52:39 +0000 (12:52 +0100)]
appDisplay: Fix focus path when edit is enabled

When an app folder is open and its panel is shown, there are
three main elements: the folder name, the list of apps, and the
Edit togglebutton. By default, the user can use TAB to jump
between the app icons and the Edit togglebutton, but when the
togglebutton is checked, the folder name becomes editable and
the focus jumps to it.

Unfortunately, if the user goes out of the editable name with
TAB, the focus only cycles between the Edit togglebutton and
the app icons, never landing over the editable folder name (which
remains editable until the Edit togglebutton is unchecked).

This patch fixed this, making the editable folder name focusable
when using TAB, as expected, when the Edit togglebutton is
checked.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/4116>
(cherry picked from commit e19ee787a37dc6e5b71485d2eab3109da62fe290)

7 months agoappDisplay: Fix accessibility for application folders
Sergio Costas Rodriguez [Wed, 4 Mar 2026 11:35:52 +0000 (12:35 +0100)]
appDisplay: Fix accessibility for application folders

Currently, application folders have a `checkbutton` role, which
is confusing for the user because it's not something that
changes its checked status, but a button that opens the contents
of the folder. Also, the only indication that this is a folder
and not a "normal" application is that role, which means that an
user must know that pushbuttons are applications and checkbuttons
are folders, which is confusing.

This patch fixes this by adding the "expandable" accessible
state to the folder button, thus notifying the user that it is
an element with extra elements inside.

It also adds the folder name and the type as the full container
label when opening a folder, thus ensuring that the user knows
where they are.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/4109>
(cherry picked from commit 6b01ddb1b445045696d1b3f70d644be77e1f03b4)

7 months agoappDisplay: Stop using toggle-mode with folder icons
Florian Müllner [Thu, 5 Mar 2026 15:22:41 +0000 (16:22 +0100)]
appDisplay: Stop using toggle-mode with folder icons

This is essentially a left-over from the original folder design, dating
all the way back to commit 6e3e2d9 in 2013.

It no longer makes much sense with the current design iteration, where
we pretend that the icon pops out of the grid and becomes the dialog
(i.e. we hide the icon and zoom out the dialog from its position).

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/4114>
(cherry picked from commit e781d8155ab312a1335dd3082dfd8abfef8430b9)

7 months agomessageTray: Avoid notification double destruction after activation
Sebastian Keller [Thu, 5 Mar 2026 12:04:37 +0000 (13:04 +0100)]
messageTray: Avoid notification double destruction after activation

The activation handler of a notification may indirectly have already
destroyed it before `activate()` continues and tries to destroy it.

This happened for example in the `FdoNotificationDaemon` activation
handler when no default actions are specified, which ends up calling
`destroyNonResidentNotifications()`.

Another case where this could happen is the `WindowAttentionHandler`
which activates the window and upon activation of the window destroys
the entire notification source, which also destroys the notification.

Closes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/5421
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/4113>
(cherry picked from commit 2fe0c2b4b23e526801ade3d54dedb578af04307c)

7 months agolayout: Catch async errors
Florian Müllner [Thu, 12 Feb 2026 13:48:36 +0000 (14:48 +0100)]
layout: Catch async errors

It is good practice to avoid "unhandled promise rejection" errors,
even when a function is not expected to reject.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/4070>
(cherry picked from commit c89d2061b38aa69f3aaafeb594d598c07b14721b)

7 months agoendSessionDialog: Immediately return from Open()
Adrian Vovk [Tue, 20 Jan 2026 05:09:29 +0000 (00:09 -0500)]
endSessionDialog: Immediately return from Open()

There's no need to wait for the dialog to finish fading in before we can
return from Open().

The code, as it was before, would break dialog updates: the dialog was
already open, so the signal would never get emitted, so the method would
never return, and so gnome-session would remain blocked waiting for a
return value that will never come.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/4040>
(cherry picked from commit 6b482e1720cb373b8a66146f16ffc9d2e49a7c52)

7 months agoshell/app-usage: Fix app usages hash table leak on shutdown
Sebastian Keller [Sun, 1 Mar 2026 23:50:09 +0000 (00:50 +0100)]
shell/app-usage: Fix app usages hash table leak on shutdown

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/4098>
(cherry picked from commit e2768fa400f890989c6953923778db667954ca28)

7 months agoshell/global: Remove repaint funcs on shutdown
Sebastian Keller [Sun, 1 Mar 2026 23:46:56 +0000 (00:46 +0100)]
shell/global: Remove repaint funcs on shutdown

This fixes a small leak caused by those functions remaining in the
`ClutterContext` `repaint_funcs` list otherwise.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/4098>
(cherry picked from commit e5381ef528284a914dd5b4c59ab97e523ebfdcba)

7 months agost/entry: Fix clutter action leak when unsetting icon
Sebastian Keller [Sun, 1 Mar 2026 01:37:51 +0000 (02:37 +0100)]
st/entry: Fix clutter action leak when unsetting icon

The name of the removed action did not match the added one anymore,
effectively "leaking" an action whenever an icon was shown and hidden.
This was primarily affecting the clear button in the shell search.

Fixes: 0bf49afda ("Replace ClutterClickAction with new ClutterClickGesture")
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/4095>
(cherry picked from commit a77dbe3d883adb6232bd455ea3c3deb86a61ed50)

7 months agost/entry: Fix primary/secondary icon leak
Sebastian Keller [Sat, 28 Feb 2026 21:26:15 +0000 (22:26 +0100)]
st/entry: Fix primary/secondary icon leak

_st_entry_set_icon() takes a ref when setting the primary/secondary
icon, but the ref is not removed when unsetting the icon or the entry is
destroyed.

Since clutter_actor_add_child() already adds a ref to the icon, there is
actually no need to manually add another ref. So stop doing that to fix
this leak.

This however also requires that StPasswordEntry takes ownership of its
own icon that it may set or unset multiple times. Since it is initially
floating we need to sink the ref for that.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/4095>
(cherry picked from commit a3c6383d7428f951394a715341cd9ecac4172b7b)

7 months agoworkspaceAnimation: Assign movingWindow before creating window actors
Sebastian Keller [Fri, 27 Feb 2026 12:22:37 +0000 (13:22 +0100)]
workspaceAnimation: Assign movingWindow before creating window actors

The BaseWorkspaceGroup constructor calls _createWindows(), which uses
_shouldShowWindow() to determine which actors to create for the
animation.

In WorkspaceGroup _shouldShowWindow() this depends on a comparison with
this._movingWindow, which however only gets set after the
BaseWorkspaceGroup constructor has been called.

This was causing the moving window to no longer stick to the screen
when moved between workspaces.

Fixes: 96be47933 ("workspaceAnimation: Split out BaseWorkspaceGroup")
Closes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/8992
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/4092>
(cherry picked from commit 45fb9698a5a99ef9af7dc2155d6b6766818d5197)

7 months agoappDisplay: Refresh folder preview when favorites change
Shivam [Sat, 21 Feb 2026 12:22:35 +0000 (17:52 +0530)]
appDisplay: Refresh folder preview when favorites change

Pinning an app from inside a folder did not refresh the
folder preview. FolderIcon._sync() was only listening
to folder GSettings changes, while pinning updates the
favorites setting instead.

As a result, _sync() was never called and the preview
could show stale icons or remain visible when the folder
became empty.

Fix this by also connecting _sync() to
AppFavorites::changed, ensuring the folder preview
updates correctly when favorites are modified.

Closes : https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/9026

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/4088>
(cherry picked from commit e9f24200e22b7a2e311224c4f16f7f0488ce6a11)

7 months agoenvironment: Use replaceAll()
Alessandro Bono [Fri, 20 Feb 2026 22:57:14 +0000 (23:57 +0100)]
environment: Use replaceAll()

The replace() function expects two parameters, likely the third one
was ignored. Use replaceAll() to replace all the occurrences, not
just the first one.

Fixes: 007b6ca2e ("environment: Add convenience method for implicit animations")
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/4084>
(cherry picked from commit 10cd1a875ddaff97b0d2220d2ad7f650da8976df)

7 months agolookingGlass: Use replaceAll()
Alessandro Bono [Fri, 20 Feb 2026 22:56:17 +0000 (23:56 +0100)]
lookingGlass: Use replaceAll()

Remove all the newlines occurrences, not just the first one.

Fixes: 52ae75d4b ("LookingGlass - JavaScript prompt and interactive Clutter controller")
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/4084>
(cherry picked from commit 8ebf6ba2ca6000b99d6049ebbe2726c92af0e4e9)

7 months agopageIndicators: Remove double assignment
Alessandro Bono [Fri, 20 Feb 2026 22:12:50 +0000 (23:12 +0100)]
pageIndicators: Remove double assignment

The same one is just one line above.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/4084>
(cherry picked from commit b599972ae1db1b76883844f25e3fa0573c1b44cb)

7 months agosessionMode: Fix modeName extraction
Alessandro Bono [Fri, 20 Feb 2026 21:57:36 +0000 (22:57 +0100)]
sessionMode: Fix modeName extraction

The slice() function expects two numbers as parameters. Pass zero
in order to properly strip the suffix.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/4084>
(cherry picked from commit c3604fbf866bcebd67f71f15037b30457d06714b)

7 months agoendSessionDialog: Fix invocation call
Alessandro Bono [Fri, 20 Feb 2026 21:48:08 +0000 (22:48 +0100)]
endSessionDialog: Fix invocation call

The function expects a domain, which was missing. Add it.

Fixes: 8f03eec3a ("endSessionDialog: Use registered D-Bus error")
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/4084>
(cherry picked from commit 21dc872b5db6f8be91f123880ff20d2261c912c5)

7 months agoappDisplay: Consider admin defined folders before creating default ones
Sebastian Keller [Sat, 21 Feb 2026 11:32:26 +0000 (12:32 +0100)]
appDisplay: Consider admin defined folders before creating default ones

The system administrator might have defined some default folders system
wide via dconf default values, so checking for user defined values is
not enough. This restores the condition to also skip creating default
ones if the value is not empty. It still skips the creation of default
folders if the empty value was the result of a user action to allow
users deleting all folders.

Fixes: b0d396c82 ("appDisplay: Only create default folders on the first start")
Closes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/9062
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/4087>
(cherry picked from commit 4b1d80383c84e2eb12a458c7a41f672d5feb2dfc)

7 months agosearch: Unset the results for the current provider if the new search failed
Marco Trevisan (Treviño) [Tue, 17 Feb 2026 14:02:56 +0000 (15:02 +0100)]
search: Unset the results for the current provider if the new search failed

In case the provider search or subsearch failed, the old results are
preserved, while they should be reset or we may show invalid data

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/4080>
(cherry picked from commit 929c8b821d3b5f5e787d8f1349134ab3e1a4a46a)

7 months agosearch: Do not check for class cancellable state after awaiting
Marco Trevisan (Treviño) [Mon, 16 Feb 2026 21:11:28 +0000 (22:11 +0100)]
search: Do not check for class cancellable state after awaiting

In an async function, after awaiting, the cancelled state for the
class-tracked cancellable may not respect the actual state of the
cancellable that has been used to perform the call.

Thus, let's use a local variable instead

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/4080>
(cherry picked from commit c55a07df6b498adb3c570d22f0024d16fc052b41)

7 months agosearch: Do not use Cancellable.reset()
Marco Trevisan (Treviño) [Mon, 16 Feb 2026 20:58:25 +0000 (21:58 +0100)]
search: Do not use Cancellable.reset()

Cancellable reset API is deprecated for long time and it's quite broken.
In fact if a search provider receives a cancelled event may end up
checking if the cancellable has been cancelled, but this may not be true
anymore after a reset.

Use instead new cancellable instances so that once one is used we can
consider the previous one completed and we can forget about it.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/4080>
(cherry picked from commit cead829503083658e736af5964d1d8eb3c92a6bb)

7 months agobuild: Update libgnome-volume-control revision
Sebastian Keller [Wed, 11 Feb 2026 20:49:31 +0000 (21:49 +0100)]
build: Update libgnome-volume-control revision

The update from 79823059 introduced a problem with switching devices in
some cases. This has been fixed now.

See: https://gitlab.gnome.org/GNOME/libgnome-volume-control/-/issues/40
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/4073>
(cherry picked from commit 7cfa577a9cdbb018411a97681ab746b55f93fe0a)

7 months agostatus/keyboard: Preserve MRU order while IBus is disabled
Maksim Mazko [Mon, 2 Mar 2026 17:44:56 +0000 (20:44 +0300)]
status/keyboard: Preserve MRU order while IBus is disabled

In password fields, IBus sources are temporarily disabled and a backup
of the MRU list is created. If the user switches layouts in that state,
the active MRU list is updated, but the backup is not.

When IBus is enabled again, the stale backup is restored and the order
the user just selected is lost. Sync the backup on interactive source
switches while IBus is disabled, so the MRU order stays consistent.

Closes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/8538
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/4101>

7 months agostatus/keyboard: Simplify MRU list updates
Maksim Mazko [Fri, 6 Mar 2026 13:20:10 +0000 (16:20 +0300)]
status/keyboard: Simplify MRU list updates

Rewrite the update logic to a more direct form, improving readability by
removing the manual iteration and list manipulation.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/4101>

7 months agoboxpointer: Properly update arrow side when requested
Florian Müllner [Thu, 12 Mar 2026 10:32:40 +0000 (11:32 +0100)]
boxpointer: Properly update arrow side when requested

Boxpointer tracks both the "user arrow side", which is the side
that was explicitly specified, and the "arrow side", which is the
actual side that may have been flipped due to space constraints.

However the former currently always keeps tracking the side that
was specified at construction time, even if it is explicitly
changed with `updateArrowSide()`.

That means that on allocation, the arrow side is reverted to its
original value again, unless the flip calculation happens to turn
it into the intended value.

This is unexpected, so update both current and intended arrow side
when updating the arrow side.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/4120>

7 months agoboxpointer: Queue relayout after updating arrow side
Florian Müllner [Fri, 13 Mar 2026 11:47:48 +0000 (12:47 +0100)]
boxpointer: Queue relayout after updating arrow side

We currently queue a repaint after setting a new arrow side, but
that seems insufficient - moving the arrow from top/bottom to the
left/right for example may very well affect the layout, plus the
arrow may need flipping due to size constraints (which happens
on allocation).

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/4120>

7 months agosystemActions: Fix initial visibility of logout action
Sebastian Keller [Fri, 13 Mar 2026 00:27:29 +0000 (01:27 +0100)]
systemActions: Fix initial visibility of logout action

When `_updateLogout()` is called on login, the AccountsService user
might not have been loaded yet. This would have resulted in all values
being null/false, including `local_account`. Since `!localAccount` is
one of the cases where the action is available, this would have wrongly
resulted in the item being shown when not intended to be shown. But only
until something triggers another call of `_updateLogout()`, such as
locking/unlocking the session.

Related: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/9100
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/4121>

7 months agodata: Re-add old Passwords and Keys desktop name
Daniel Rusek [Thu, 12 Mar 2026 10:34:26 +0000 (10:34 +0000)]
data: Re-add old Passwords and Keys desktop name

Seahorse desktop file name was changed in upstream, but the new release
was delayed. This caused Seahorse to be outside the Utilities folder in
newer distributions, which is not correct.

The new Seahorse version should be out soon, so reverting the new name
is not a good idea. Instead, the old name should be added back.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/4119>

7 months agomain: Also respect --force-animations flag in remote sessions
Florian Müllner [Wed, 11 Mar 2026 21:37:20 +0000 (22:37 +0100)]
main: Also respect --force-animations flag in remote sessions

When commit 33d3a6564 added support for the --force-animations flag,
it explicitly excluded remote sessions.

There has been some interest in enabling the flag for remote sessions
as well recently, and as nobody seems to remember why they were
excluded, do just that.

Closes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/9099
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/4118>

7 months agoappDisplay: Fix focus path when edit is enabled
Sergio Costas Rodriguez [Tue, 10 Mar 2026 11:52:39 +0000 (12:52 +0100)]
appDisplay: Fix focus path when edit is enabled

When an app folder is open and its panel is shown, there are
three main elements: the folder name, the list of apps, and the
Edit togglebutton. By default, the user can use TAB to jump
between the app icons and the Edit togglebutton, but when the
togglebutton is checked, the folder name becomes editable and
the focus jumps to it.

Unfortunately, if the user goes out of the editable name with
TAB, the focus only cycles between the Edit togglebutton and
the app icons, never landing over the editable folder name (which
remains editable until the Edit togglebutton is unchecked).

This patch fixed this, making the editable folder name focusable
when using TAB, as expected, when the Edit togglebutton is
checked.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/4116>

7 months agoUpdate Danish translation
Ask Hjorth Larsen [Mon, 9 Mar 2026 23:10:53 +0000 (23:10 +0000)]
Update Danish translation

8 months agoUpdate British English translation
Bruce Cowan [Sun, 8 Mar 2026 16:58:41 +0000 (16:58 +0000)]
Update British English translation

8 months agoUpdate Polish translation
Victoria [Sun, 8 Mar 2026 11:22:27 +0000 (11:22 +0000)]
Update Polish translation

8 months agoappDisplay: Fix accessibility for application folders
Sergio Costas Rodriguez [Wed, 4 Mar 2026 11:35:52 +0000 (12:35 +0100)]
appDisplay: Fix accessibility for application folders

Currently, application folders have a `checkbutton` role, which
is confusing for the user because it's not something that
changes its checked status, but a button that opens the contents
of the folder. Also, the only indication that this is a folder
and not a "normal" application is that role, which means that an
user must know that pushbuttons are applications and checkbuttons
are folders, which is confusing.

This patch fixes this by adding the "expandable" accessible
state to the folder button, thus notifying the user that it is
an element with extra elements inside.

It also adds the folder name and the type as the full container
label when opening a folder, thus ensuring that the user knows
where they are.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/4109>

8 months agoappDisplay: Stop using toggle-mode with folder icons
Florian Müllner [Thu, 5 Mar 2026 15:22:41 +0000 (16:22 +0100)]
appDisplay: Stop using toggle-mode with folder icons

This is essentially a left-over from the original folder design, dating
all the way back to commit 6e3e2d9 in 2013.

It no longer makes much sense with the current design iteration, where
we pretend that the icon pops out of the grid and becomes the dialog
(i.e. we hide the icon and zoom out the dialog from its position).

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/4114>

8 months agomessageTray: Avoid notification double destruction after activation
Sebastian Keller [Thu, 5 Mar 2026 12:04:37 +0000 (13:04 +0100)]
messageTray: Avoid notification double destruction after activation

The activation handler of a notification may indirectly have already
destroyed it before `activate()` continues and tries to destroy it.

This happened for example in the `FdoNotificationDaemon` activation
handler when no default actions are specified, which ends up calling
`destroyNonResidentNotifications()`.

Another case where this could happen is the `WindowAttentionHandler`
which activates the window and upon activation of the window destroys
the entire notification source, which also destroys the notification.

Closes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/5421
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/4113>

8 months agoBump version to 50.rc
Florian Müllner [Tue, 3 Mar 2026 13:12:08 +0000 (14:12 +0100)]
Bump version to 50.rc

Update NEWS.

8 months agobuild: Bump gjs requirement
Florian Müllner [Tue, 3 Mar 2026 13:09:44 +0000 (14:09 +0100)]
build: Bump gjs requirement

We started using the one-shot idle/timeout functions[0] that gjs
added this cycle, so depend on a recent enough version.

[0] https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3947

8 months agolayout: Wait for backgrounds to load, even when interrupted
Florian Müllner [Thu, 12 Feb 2026 12:50:47 +0000 (13:50 +0100)]
layout: Wait for backgrounds to load, even when interrupted

We no longer get stuck when a background manager is destroyed during
the startup animation, but we now resolve before the new backgrounds
have been loaded.

Address this by keeping the returned promise around until it is fulfilled,
and only resolve it after backgrounds were loaded successfully.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/4070>

8 months agolayout: Reject promise if background loading is interrupted
Florian Müllner [Tue, 10 Feb 2026 14:30:46 +0000 (15:30 +0100)]
layout: Reject promise if background loading is interrupted

Currently if a background manager is destroyed while we are waiting
for the background to load, the corresponding promise never resolves.

To prevent this from happening (and the startup animation getting
stuck as a result), guard the loading operation with a cancellable
and reject the promise when it is cancelled.

Closes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/9018
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/4070>

8 months agolayout: Catch async errors
Florian Müllner [Thu, 12 Feb 2026 13:48:36 +0000 (14:48 +0100)]
layout: Catch async errors

It is good practice to avoid "unhandled promise rejection" errors,
even when a function is not expected to reject.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/4070>

8 months agosystemActions: Call into gnome-session for suspend
Adrian Vovk [Fri, 27 Feb 2026 21:21:46 +0000 (16:21 -0500)]
systemActions: Call into gnome-session for suspend

gnome-shell previously talked to logind directly on its own. This,
however, will lead to code duplication: the various inhibitor handling
bugfixes I've made to gnome-session (i.e. handling the new return values
from CanPowerOff/CanReboot/CanSuspend) would have to be copied into
gnome-shell. So instead, this commit just moves the responsibility for
handling suspend into gnome-session.

There's a corresponding change in gnome-session

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/4040>

8 months agosystemActions: Separate CanReboot from CanShutdown
Adrian Vovk [Tue, 20 Jan 2026 05:04:57 +0000 (00:04 -0500)]
systemActions: Separate CanReboot from CanShutdown

The reboot actions and shutdown actions are independent, and might have
independent availability. It's perfectly valid for a system
administrator to configure a system where one action is available and
the other isn't. This commit separates the availability of these
actions, and allows them to be independently shown/hidden

There's a corresponding change in gnome-session

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/4040>

8 months agosystemActions: Switch to updated CanShutdown() API
Adrian Vovk [Fri, 27 Feb 2026 20:58:17 +0000 (15:58 -0500)]
systemActions: Switch to updated CanShutdown() API

There's corresponding changes in gnome-session that report more detail
about the availability of the action. This allows gnome-shell to
appropriately hide the action whenever it is inhibited, and would lead
to a Polkit prompt.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/4040>

8 months agoendSessionDialog: Immediately return from Open()
Adrian Vovk [Tue, 20 Jan 2026 05:09:29 +0000 (00:09 -0500)]
endSessionDialog: Immediately return from Open()

There's no need to wait for the dialog to finish fading in before we can
return from Open().

The code, as it was before, would break dialog updates: the dialog was
already open, so the signal would never get emitted, so the method would
never return, and so gnome-session would remain blocked waiting for a
return value that will never come.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/4040>

8 months agoshell/app-usage: Fix app usages hash table leak on shutdown
Sebastian Keller [Sun, 1 Mar 2026 23:50:09 +0000 (00:50 +0100)]
shell/app-usage: Fix app usages hash table leak on shutdown

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/4098>

8 months agoshell/global: Remove repaint funcs on shutdown
Sebastian Keller [Sun, 1 Mar 2026 23:46:56 +0000 (00:46 +0100)]
shell/global: Remove repaint funcs on shutdown

This fixes a small leak caused by those functions remaining in the
`ClutterContext` `repaint_funcs` list otherwise.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/4098>

8 months agost/entry: Fix clutter action leak when unsetting icon
Sebastian Keller [Sun, 1 Mar 2026 01:37:51 +0000 (02:37 +0100)]
st/entry: Fix clutter action leak when unsetting icon

The name of the removed action did not match the added one anymore,
effectively "leaking" an action whenever an icon was shown and hidden.
This was primarily affecting the clear button in the shell search.

Fixes: 0bf49afda ("Replace ClutterClickAction with new ClutterClickGesture")
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/4095>

8 months agost/entry: Fix primary/secondary icon leak
Sebastian Keller [Sat, 28 Feb 2026 21:26:15 +0000 (22:26 +0100)]
st/entry: Fix primary/secondary icon leak

_st_entry_set_icon() takes a ref when setting the primary/secondary
icon, but the ref is not removed when unsetting the icon or the entry is
destroyed.

Since clutter_actor_add_child() already adds a ref to the icon, there is
actually no need to manually add another ref. So stop doing that to fix
this leak.

This however also requires that StPasswordEntry takes ownership of its
own icon that it may set or unset multiple times. Since it is initially
floating we need to sink the ref for that.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/4095>

8 months agoUpdate Portuguese translation
Hugo Carvalho [Sat, 28 Feb 2026 22:58:17 +0000 (22:58 +0000)]
Update Portuguese translation

8 months agoUpdate Japanese translation
小山田 純 - Oyamada Jun [Sat, 28 Feb 2026 03:59:28 +0000 (03:59 +0000)]
Update Japanese translation

8 months agoPass NULL as color state when capturing stage
Jonas Ådahl [Wed, 25 Feb 2026 20:19:57 +0000 (21:19 +0100)]
Pass NULL as color state when capturing stage

NULL means the default color state of the stage will be used, which is
what happened before.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/4090>

8 months agoci: Bump mutter CI image version to include PipeWire 1.6.0
Jonas Ådahl [Wed, 25 Feb 2026 21:33:15 +0000 (22:33 +0100)]
ci: Bump mutter CI image version to include PipeWire 1.6.0

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/4090>

8 months agoworkspaceAnimation: Assign movingWindow before creating window actors
Sebastian Keller [Fri, 27 Feb 2026 12:22:37 +0000 (13:22 +0100)]
workspaceAnimation: Assign movingWindow before creating window actors

The BaseWorkspaceGroup constructor calls _createWindows(), which uses
_shouldShowWindow() to determine which actors to create for the
animation.

In WorkspaceGroup _shouldShowWindow() this depends on a comparison with
this._movingWindow, which however only gets set after the
BaseWorkspaceGroup constructor has been called.

This was causing the moving window to no longer stick to the screen
when moved between workspaces.

Fixes: 96be47933 ("workspaceAnimation: Split out BaseWorkspaceGroup")
Closes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/8992
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/4092>

8 months agoUpdate Korean translation
Changwoo Ryu [Fri, 27 Feb 2026 00:23:17 +0000 (00:23 +0000)]
Update Korean translation

8 months agoappDisplay: Refresh folder preview when favorites change
Shivam [Sat, 21 Feb 2026 12:22:35 +0000 (17:52 +0530)]
appDisplay: Refresh folder preview when favorites change

Pinning an app from inside a folder did not refresh the
folder preview. FolderIcon._sync() was only listening
to folder GSettings changes, while pinning updates the
favorites setting instead.

As a result, _sync() was never called and the preview
could show stale icons or remain visible when the folder
became empty.

Fix this by also connecting _sync() to
AppFavorites::changed, ensuring the folder preview
updates correctly when favorites are modified.

Closes : https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/9026

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/4088>

8 months agoenvironment: Use replaceAll()
Alessandro Bono [Fri, 20 Feb 2026 22:57:14 +0000 (23:57 +0100)]
environment: Use replaceAll()

The replace() function expects two parameters, likely the third one
was ignored. Use replaceAll() to replace all the occurrences, not
just the first one.

Fixes: 007b6ca2e ("environment: Add convenience method for implicit animations")
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/4084>

8 months agolookingGlass: Use replaceAll()
Alessandro Bono [Fri, 20 Feb 2026 22:56:17 +0000 (23:56 +0100)]
lookingGlass: Use replaceAll()

Remove all the newlines occurrences, not just the first one.

Fixes: 52ae75d4b ("LookingGlass - JavaScript prompt and interactive Clutter controller")
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/4084>

8 months agopageIndicators: Remove double assignment
Alessandro Bono [Fri, 20 Feb 2026 22:12:50 +0000 (23:12 +0100)]
pageIndicators: Remove double assignment

The same one is just one line above.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/4084>

8 months agosessionMode: Fix modeName extraction
Alessandro Bono [Fri, 20 Feb 2026 21:57:36 +0000 (22:57 +0100)]
sessionMode: Fix modeName extraction

The slice() function expects two numbers as parameters. Pass zero
in order to properly strip the suffix.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/4084>

8 months agoendSessionDialog: Fix invocation call
Alessandro Bono [Fri, 20 Feb 2026 21:48:08 +0000 (22:48 +0100)]
endSessionDialog: Fix invocation call

The function expects a domain, which was missing. Add it.

Fixes: 8f03eec3a ("endSessionDialog: Use registered D-Bus error")
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/4084>

8 months agoobjectManager: Remove unused function
Alessandro Bono [Fri, 20 Feb 2026 21:42:03 +0000 (22:42 +0100)]
objectManager: Remove unused function

Introduced with 4b450bab1164b9b1225702238e539201974a68b6, this function
has never been used. Furthermore it is wrong because objectPaths is not
indexed. Just drop it.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/4084>

8 months agoUpdated Spanish translation
Daniel Mustieles [Mon, 23 Feb 2026 15:09:16 +0000 (16:09 +0100)]
Updated Spanish translation

8 months agoappDisplay: Consider admin defined folders before creating default ones
Sebastian Keller [Sat, 21 Feb 2026 11:32:26 +0000 (12:32 +0100)]
appDisplay: Consider admin defined folders before creating default ones

The system administrator might have defined some default folders system
wide via dconf default values, so checking for user defined values is
not enough. This restores the condition to also skip creating default
ones if the value is not empty. It still skips the creation of default
folders if the empty value was the result of a user action to allow
users deleting all folders.

Fixes: b0d396c82 ("appDisplay: Only create default folders on the first start")
Closes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/9062
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/4087>